package com.baizhi.bzmall.admin.service.impl;

import com.baizhi.bzmall.admin.service.IBzCategoryService;
import com.baizhi.bzmall.dao.BzCategoryMapper;
import com.baizhi.bzmall.entity.BzCategory;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 商品三级分类; InnoDB free: 11264 kB 服务实现类
 * </p>
 *
 * @author zhengg
 * @since 2021-03-17
 */
@Service
public class BzCategoryServiceImpl extends ServiceImpl<BzCategoryMapper, BzCategory> implements IBzCategoryService {

    @Override
    public List<BzCategory> selectAllLevelCategory() {
        List<BzCategory> cs = this.list();
        List<BzCategory> collect = cs.stream()
                .filter((category) -> category.getCategoryLevel()==1)//过滤出一级分类信息
                .peek((category)->category.setChildren(getChildrenBzCategory(category.getCategoryId(),cs)))
                .collect(Collectors.toList());
        return collect;
    }
    /**
     * 根据菜单的id查找出该菜单下面的子菜单。
     * @param parentId 要查找的父菜单的编号
     * @param cs 所有的
     */
    private List<BzCategory> getChildrenBzCategory(long parentId, List<BzCategory> cs){
        return cs.stream().filter(category->category.getParentId()==parentId)//过滤出想要查询的子菜单。
                //给当前的菜单的children属性赋值
                .peek(category->category.setChildren(getChildrenBzCategory(category.getCategoryId(),cs)))//递归调用，当过滤后没有子菜单了程序就结束了。
                .collect(Collectors.toList());
    }

}
